步态评价函数相关论文的阅读与思考
步态优化——适应度函数的一些思路
现有适应度函数总结:
- 记录固定时间的行走距离:
walk类:
1 | double walkdist = (me-start).getX(); |
walkdist为agent行走十秒所走的距离。
故评价函数为:五次行走中,十秒钟内走的平均距离。
dribble类也是类似的评价函数,十五秒内带球距离。
- 使机器人来回跑动,记录跑完全程的最短时间。
让机器人出现在球场的(-1, 0, 0)这个位置,之后让机器人跑动到(4, 2, 0), (4, -2, 0)最后把跑回(-1, 0, 0)。每次训练机器人跑5次,记录这5次的平均时间。尝试寻找使得这个平均时间最短的参数。
似乎就这两种= =?
基于距离、ZMP及质心偏差的适应度函数
引自论文:何荣义, 李春光. RoboCup3D仿真机器人步态优化研究[J]. 计算机与现代化, 2018.
看了这篇论文,对比我们目前现有的评价函数。
感觉我们的评价函数还是有些问题:1. 只注重速度,所以稳定性很差。2. 四点来回走虽然在稳定性上使得动作有所提高,但是还是有些太宏观,而不细致。
这篇论文提到的评价函数方法或许可以打开一些思路。
所给出的一共有三个评价函数。
1. 行走距离
一个训练周期内的行走距离,即速度上的评价。
2. ZMP 坐标序列
ZMP即零力矩点,双足机器人在行走过程中, ZMP 始终在支撑多边形框内。即若ZMP在脚掌范围内则表示动作是稳定的。
通过对步行动作序列实际的ZMP坐标和所期待的ZMP坐标作差即可得到评价值。
3. 质心偏差
通过对比所期待的质心坐标与实际的质心坐标来判定双足机器人躯干是否保持稳定 。
双足机器人在行走时,躯干保持稳定,身体不晃动 。 在双腿支撑初期,所期望的 X 轴方向质心坐标为两脚坐标的中点,但在训练中,所期望的质心坐标与实际质心坐标相比是有偏差的 。
TODO:如何与UT底层结合。
累积分层优化方法
引自论文:蔡朝宏, 江红. 一种双足步行的累积分层优化方法[J]. 小型微型计算机系统, 2013(05):190-194.
我们现有的分层优化:
还没看 = =。
论文实现的分层优化:
步行的累积分层优化过程:
所优化的参数:

前三层所优化的参数为:第1,4,5,6,8,9个参数。
第四层优化的参数为所有参数。
第一层:Fast Walk
适应度函数为:

共有两个参数:
- 行走距离。
- 摔倒的惩罚项。
经过此层学习后,机器人走路的速度会变快。
第二层:Stable Walk
适应度函数为:
共有三个参数:
1.、2.参数同第一层。
- 步行中机器人身体滚动角和俯仰角的加权和超过设定阈值时的惩罚项。
即若身体在行走中的搬动幅度太大,可能会对稳定性造成影响,施加惩罚使其避免幅度过大的情况。
此外,该层学习的初始输入为第一层学习完成时的输出,这样可以在保证较快行走速度的前提下,继续学习稳定的步 给出了该优化策略的演变过程.行. 再次通过实验后,机器人获得了相较于第一层而言更具稳定性的步行,同时其行走速度仍保持在 0. 477m / s 左右。
第三层:Final Stable Walk
适应度函数为:
前三个参数见第二层。
- Pzmp:ZMP 点超出支撑多边形时的惩罚项
避免ZMP超出支撑多边形。
同样,学习算法的初始输入为第二层学习得到的结果. 这次得到了比”Stable Walk” 更加稳定协调的步行,步伐的不协调现象基本被消除。
前三层的均为直线行走。
第四层:Final Stable Flexible Walk
在机器人足球比赛这样一个高度动态的环境中,仅有一个稳定的步行是不够的,机器人的步行还必须具备灵活机动的特性,即能够随时在前向行走、 后向行走、 侧向行走和曲线行走之间切换,并且保证步行的稳定性和切换的协调性.
为了验证” Final Stable Walk” 的灵活机动性,让机器人按照预设的几种任务行走,任务中包含前后向步行、 侧向行走、 快速改变步行方向、 逆顺时针曲线步行等.
适应度函数:
不再包含第二、三层的参数,而只有第一层的参数。
新增的参数:
r:在规定的时间内成功完成任务时的奖励项,奖励值为完成任务时的剩余时间与本次任务中平均速度的乘积.
在这层的学习中,待优化的参数集为表中所有参数,即增加了与侧向和转身行走相关的参数. 在该层学习中,融合了文[ 15]中的分层学习方法,即在进行前向直线行走时,固定参数集为” Final Stable Walk” 的参数,其它情况的步行采用算法所产生的参数. 学习任务就是对” Final StableWalk” 测试时的任务。通过学习,机器人可以在很短的时间内完成既定任务,行走过程中很稳定不会摔倒.而且机器人拥有两个不同行走参数集,当要完成不同的行走任务时,可以随时切换参数集,这种切换的协调性也是通过学习获得的.
最后一段话中有许多的信息。
总结分析
前三层的优化较易理解,即:每层多增加一个适应度函数的参数,除第一层外输入参数集均从上一层优化中选取。应该会使得优化效率提高。
而第四层与前三层有所不同:
- 增加了优化参数数量。
- 并非只用前一层的参数集作输入。
- 使得机器人拥有两套参数集,并具有一定的切换协调性。
关键点:
在进行前向直线行走时,固定参数集为” Final Stable Walk” 的参数,其它情况的步行采用算法所产生的参数.
需要在侧向行走时切换参数集。(我们现在侧向行走与直线行走用的是同一套参数吗?)
直线行走用前一层的参数,侧向行走的参数由算法生产。
而且机器人拥有两个不同行走参数集,当要完成不同的行走任务时,可以随时切换参数集,这种切换
的协调性也是通过学习获得的.
在完成不同行走任务,切换不同的参数集。由于优化时两套参数集要进行切换,若切换失败则适应度函数值定会很低。所以优化出来的两套参数一定具备切换协调性,即第四层生成的侧向行走用的参数适应第三层的参数。
TODO:如何和UT的底层结合?
- 找出参数中哪些是有关直线行走,哪些是有关侧向行走。
- UT侧向行走的实现,重点关注切换参数集。
脚本调用总结:(todo)
cma-es:
eva函数:
(忽略一些具体的细节)
输入动作的基础参数,生成一个参数列表传给run()函数。
从run函数中得到评价值,将评价值及生成的新参数写入给定文件中。
run_params:
从cma-es中得到基础的参数列表,将其